home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-03-15 | 870 b | 37 lines | [TEXT/MPCC] |
- module: Dylan-User
-
- define method fact (n :: <integer>)
- let zero = as(<extended-integer>, 0);
- let one = as(<extended-integer>, 1);
- local method fact-acc (value, n)
- if (n = zero | n = one)
- value;
- else
- fact-acc(value * n, n - one);
- end if;
- end method;
- fact-acc(one, as(<extended-integer>, n));
- end method;
-
- define method fact-iter (n :: <integer>)
- let one = as(<extended-integer>, 1);
- let two = as(<extended-integer>, 2);
- let f = one;
- n = as(<extended-integer>, n);
- for (i from two to n)
- f := f * i;
- end for;
- f;
- end method;
-
- define method main (arg0, #rest args)
- puts("testing fact.\n"); // fflush();
- break("testing fact.");
- let f500 = fact(500);
- puts("fact(500) = "); print(f500); fflush();
- puts("testing fact-iter.\n"); fflush();
- let fi500 = fact-iter(500);
- puts("fact-iter(500) = "); print(fi500); fflush();
- // break("testing!");
- end;
-